Digital Signal Processing
OS: Ubuntu 20.04 LTS
Language: C
These were tested in the Socket Sever.
This relationships are used:
fs (Hz)= N ( )/ Dur (s), where N is number of samples and Dur is sampling period.
df (Hz) = fs (Hz) / N ( ) = 1 / Dur (s)
Need to check on the discrepency between the amplitude values of the FFT result
KissFFT
https://github.com/mborgerding/kissfft
Was initially used to test FFT on the recived data in the Socket Server
Calcualted FFT frequency values were correct.
Amplitude of the signals were of by about 10%.

Liquid-DSP
https://liquidsdr.org/ FFT details: https://liquidsdr.org/doc/fft/
This is a C Library for DSP. Still being maintained.
Installation
Verify the
gccandmakeversions. If they are not installed, follow the instrutcions in herewhereis gcc make
gcc --version
make -vgit clone https://github.com/jgaeddert/liquid-dsp.gitin a directory like~/git/publicsudo apt-get install automake autoconfGo into the cloned directory and install the library.
./bootstrap.sh
./configure
make
sudo make install
sudo ldconfigIn your project compilation (gcc or Makefile), include
-lliquidflag.

CEEMDAN analysis
This is one of the features in Sensata's Machine Health Monitoring Solution and the paper A fault diagnosis method of rolling
element bearings based on CEEMDAN
Empirical mode decomposition (EMD) is one of the most powerful signal processing techniques and has been extensively studied and widely applied in fault diagnosis of rotating machinery" [full text] One of the suggested methods from 'A fault diagnosis method of rollingelement bearings based on CEEMDAN':
CEEDMAN stands for
Complete Ensemble Empirical Mode Decomposition with Adaptive Noise
Check EEMD described in MATLAB documentation
libeemd, a C based EEMD library
We are using C based EEMD library, libeemd by Perttu Luukko to integrate CEEMDAN to our project.
It depends on GNU Scientific Library (GSL)
Install GSL
sudo apt-get install libgsl-devFollow the instructions in libeemd readme to integrate it with C.
Example CEEMDAN output for sinusoidal signal:
Grafana visualization
CEEMDAN decomposition example
Timedomain signal: Check the channel gz
CEEMDAN Components: Of channel gz
It seemes CEEMDAN decomposes the underlaying frequency components into the accurate timedomain signals
Possible alternatives
- ROOT, a Scientific Computation library.
- Nvidia Vision Framework, Cuda supported.
Useful links
FFT sample size and bin size https://dsp.stackexchange.com/questions/48216/understanding-fft-fft-size-and-bins
Reducing number of FFT samples https://dsp.stackexchange.com/questions/17579/number-of-dft-fft-points-required-for-a-specific-frequency-resolution-for-an-o
Comparison between ESP_DSP and Liquid DSP




CEEMDAN Components:
Of channel gz
